const jwt = require('jsonwebtoken');

module.exports = () => {
    return async (ctx, next) =>{
        // console.log(ctx.request.path.indexOf('admin')!=-1)
        // 请求路径为/api/xxx，并且不是/api/login，因为请求登录的时候还没有token
        if (!ctx.request.path.endsWith('login')&&!ctx.request.path.endsWith('register')&&ctx.request.path.indexOf('admin')==-1) {
            // 假定请求方式全部为POST，并且token在请求头的token字段中
            let token = ctx.request.header.token,
                userid = ctx.request.body.user_id
            if(!token) {
                ctx.response.status = 400;
                ctx.response.body = {
                    code: 500,
                    message: 'token不存在'
                };
                return;
            }
            try {

                let payload = jwt.verify(token, 'book');
                // console.log(payload)
                if(payload.userid != userid) {
                    throw new Error('token无效');
                }
                await next();
            } catch (err) {
                ctx.response.status = 400;
                ctx.response.body = {
                    code: 500,
                    message: 'token无效'
                };
            }
        } else {
            await next();
        }
    };
};